package br.com.blog.acoes.pessoa;

import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.Transactional;
import org.jboss.seam.annotations.web.RequestParameter;

import br.com.blog.acoes.ActionPadrao;
import br.com.blog.entidades.Pessoa;


@Name("editarPessoaAction")
@Scope(ScopeType.PAGE)
public class EditarPessoaAction extends ActionPadrao {
    
	

	public char getTELA_EDICAO() {
        return TELA_EDICAO;
    }

   
    public char getTELA_SUCESSO() {
        return TELA_SUCESSO;
    }
    private Pessoa pessoa;
    
    private final char TELA_EDICAO = 'E';
    private final char TELA_SUCESSO = 'S';
    private char tipoTela;

    @RequestParameter
    private Long idPessoa;

    public Pessoa getPessoa() {
        return pessoa;
    }

   
    public void setPessoa(Pessoa pessoa) {
        this.pessoa = pessoa;
    }

   
    public Long getIdPessoa() {
        return idPessoa;
    }

    
    public void setIdPessoa(Long idPessoa) {
        this.idPessoa = idPessoa;
    }

     
    public char getTipoTela() {
        return tipoTela;
    }

    
    public void setTipoTela(char tipoTela) {
        this.tipoTela = tipoTela;
    }
    
    public void editar() {
        pessoa = buscarPessoa();
        setTipoTela(getTELA_EDICAO());
    }

    @Transactional
    public void confirmarAlteracao() {
        hibernateSession.update(pessoa);
        hibernateSession.flush();
        setTipoTela(getTELA_SUCESSO());
    }
    @Transactional
    public void confirmarExclusao() {
        hibernateSession.delete(buscarPessoa(pessoa.getId()));
        hibernateSession.flush();
        setTipoTela(getTELA_SUCESSO());
    }
    public void novoCadastro() {
        pessoa = new Pessoa();
        setTipoTela(getTELA_EDICAO());
    }
    @Transactional
    public void confirmarInclusao() {
        hibernateSession.save(pessoa);
        hibernateSession.flush();
        setTipoTela(getTELA_SUCESSO());
    }

    private Pessoa buscarPessoa() {
        if (idPessoa != null) {
            return (Pessoa) hibernateSession.load(Pessoa.class, idPessoa);
        }
        return null;
    }
    private Pessoa buscarPessoa(Long idPessoa) {
            return (Pessoa) hibernateSession.load(Pessoa.class, idPessoa);
    }
}
